import Vue from 'vue'
import Vuex from 'vuex'
import {getStore, setStore} from '../utils/storage'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 用户列表
    getUserOption:[],
    // 角色列表
    getRoleOption:[],
    // ip及端口号
    getHost: '',
    panelHeight: `${window.innerHeight}px`,
    userInfo: getStore('ngStorage-currentLoginInfo') || {},
    // 保存当前页
    previewFileSrc: ''
  },
  mutations: {
    // 获取用户列表
    getUserInfo(state, {userData, roleData}){
      // 将参数中的用户列表通过map方法遍历并生成一个新得数组赋值给getUserOption
      state.getUserOption = userData.map(item => {
        return {
          value: item.userId,
          name: item.userName
        }
      });
      // getRoleOption
      state.getRoleOption = roleData.map(item => {
        return {
          value: item.roleCode,
          name: item.roleName
        }
      });
      const getUserInfo = {
        getUserOption: state.getUserOption,
        getRoleOption: state.getRoleOption
      }
      // 将重构后的用户列表和角色列表组合成新得对象getUserInfo，存入本地存储中
      setStore('getUserInfo',JSON.stringify(getUserInfo))
    },
    // 初始化状态中的getHost
    initHost(state){
      let localHost = getStore('localhost');
      if(localHost){
        state.getHost = localHost;
      }
    },
    
  },
  actions: {
    // 通过异步请求获取lims中的用户列表和权限列表
    async getUserInfo({commit, state}){
      try {
        const userRes = await Vue.prototype.$api.flowChartService.user();
        const roleRes = await Vue.prototype.$api.flowChartService.role();
        // 调用mutations中的getUserInfo方法，并将用户列表和角色列表传入方法中
        commit('getUserInfo',{userData:userRes.data,roleData:roleRes.data})
      }catch(err){
        console.log(err);
      }
    }
  }
})
